/*Version 1.0*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "Cercle.h"

/*Precondition : Cercle non initialisee                                                                                                Postcondition : Cercle initialisee*/
void InitCercle(Cercle * cer)
{
  cer->coordoCer.x=0;
  cer->coordoCer.y=0;
  cer->rayon=0;
  cer->epaisseur_contour=0;
  cer->contour.r=0;
  cer->contour.g=0;
  cer->contour.b=0;
  cer->fond.r=0;
  cer->fond.g=0;
  cer->fond.b=0;
}

/*Precondition : Cercle initialisee      */
void CreerCercle(Cercle * cer,double rayon, double epaisseur_contour, Couleur fond, Couleur contour,Coordonnees c)
{
  assert(c.x >= 0 && c.y>= 0 && rayon >=0 && epaisseur_contour >= 0);
  cer->coordoCer.x=c.x;
  cer->coordoCer.y=c.y;
  cer->rayon=rayon;
  cer->epaisseur_contour = epaisseur_contour;
  cer->contour.r=contour.r;
  cer->contour.g=contour.g;
  cer->contour.b=contour.b;
  cer->fond.r=fond.r;
  cer->fond.g=fond.g;
  cer->fond.b=fond.b;
}

/*Precondition : Cercle initialisee   */
void ModifierFondCercle(Cercle * cer,Couleur fond)
{
  cer->fond.r=fond.r;
  cer->fond.g=fond.g;
  cer->fond.b=fond.b;
}

/*  ModifierTailleCercle modifie le rayon du cercle */
/*Precondition : Cercle initialisee   */
void ModifierTailleCercle(Cercle * cer,double rayon)
{
  assert(rayon>=0);
  cer->rayon=rayon;
}

/*ModifierContourCercle modifie l'epaisseur du cercle et la couleur du contour */
/*Precondition : Cercle initialisee   */
void ModifierContourCercle(Cercle * cer,double epaisseur_contour,Couleur contour)
{
  assert(epaisseur_contour >= 0 );
  cer->epaisseur_contour = epaisseur_contour;
  cer->contour.r=contour.r;
  cer->contour.g=contour.g;
  cer->contour.b=contour.b;
}

/*ModifierCoordonneesCercle modifie le de coordonnees (x,y) */
/*Precondition : Cercle initialisee   */
void ModifierCoordonneesCercle(Cercle * cer,Coordonnees c)
{
  assert(c.x >= 0 && c.y >= 0);
  cer->coordoCer.x=c.x;
  cer->coordoCer.y=c.y;
}

double getDiametre(double rayon)
{
  assert(rayon >= 0);
  return (rayon*2);
}
